package org.domus.sipnmove.useragent;

/**
 * A simple SIP user agent with no special features than initiating or receiving
 * call
 */
public interface UserAgent {

	/**
	 * Add a user agent Observer
	 * 
	 * @param userAgentObserver
	 */
	public void addUserAgentObserver(UserAgentObserver userAgentObserver);

	/**
	 * Initiate a new call with specified parameters
	 * 
	 * Call creation will be notified to the user agent listeners, that's why no
	 * Call instance is returned
	 */
	public void createCall(String addressText);

	/**
	 * Quit the user agent application
	 * 
	 * Need to close all Calls and other stuff
	 */
	public void quit();

	/**
	 * Return user information in an object
	 * 
	 * @return user information in an object
	 */
	public UserInformation getUserInformation();

	/**
	 * Remove a call from the user agent (probably because of a terminate)
	 * 
	 * @param callId
	 */
	public void removeCall(String callId);

}
